﻿using BO;
using JMI_Nucleo.Classe;
using JMI_Nucleo.View.Form_Util;
using OR;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ControleUsuario
{
    public partial class FrmLogin : Form
    {
        private Usuario usuario = null;
        private Empresa empresa = null;

        private FrmAviso formAviso = null;

        public FrmLogin()
        {
            InitializeComponent();
        }

        private void BtnCancelar_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void Inicializa()
        {
            picAberto.Visible = false;
            picFechado.Visible = true;
            BtnConfirma.Enabled = false;
            List<mEmpresa> lst = new List<mEmpresa>();
            empresa = new Empresa();

            lst = empresa.GetLista();

            if (lst.Count > 0)
                lst.ForEach(p => CboEmpresa.Items.Add(p.Pessoa.Apelido));

            TxtUsuario.Text = "JUNIOR";
            TxtSenha.Text = "123456";
            TxtUsuario.Focus();
        }        

        private void FrmLogin_Load(object sender, EventArgs e)
        {
            Inicializa();
        }

        private void BtnConfirma_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void CboEmpresa_Leave(object sender, EventArgs e)
        {
            lblStatus.Text = String.Empty;
            TrocaIconeAviso(1);
            if (String.IsNullOrEmpty(TxtUsuario.Text))
            {
                lblStatus.Text = "Nome do usuário inválido.";
                TxtUsuario.Focus();
                TrocaIconeAviso(2);
            }
            else if (String.IsNullOrEmpty(TxtSenha.Text))
            {
                lblStatus.Text = "Senha inválido.";
                TrocaIconeAviso(2);
                TxtSenha.Focus();
            }
            else if (String.IsNullOrEmpty(CboEmpresa.Text))
            {
                lblStatus.Text = "Empresa inválida.";
                TrocaIconeAviso(2);
                CboEmpresa.Focus();
            }
            else
            {
                short codigoEmpresa = 0;

                if (!String.IsNullOrEmpty(CboEmpresa.Text))
                {
                    empresa = new Empresa();
                    codigoEmpresa = empresa.GetCodigo(CboEmpresa.Text);
                }

                usuario = new Usuario();

                if (usuario.ValidaUsuario(TxtUsuario.Text, TxtSenha.Text, codigoEmpresa))
                {
                    picFechado.Visible = false;
                    picAberto.Visible = true;
                    BtnConfirma.Enabled = true;
                    BtnConfirma.Focus();
                }
                else
                {
                    lblStatus.Text = "Nome ou Senha inválido(s).";
                    TrocaIconeAviso(2);
                    TxtUsuario.Focus();
                }
            }
        }

        private void TrocaIconeAviso(byte Icone)
        {
            lblStatus.Dock = DockStyle.None;
            switch (Icone)
            {
                case 1:
                    picAlerta.Visible = false;
                    picAlerta.Dock = DockStyle.None;
                    picInformacao.Visible = true;
                    picInformacao.Dock = DockStyle.Left;
                    lblStatus.Dock = DockStyle.Fill;
                    lblStatus.ForeColor = SystemColors.ControlText;
                    Color clr = Color.FromArgb(224, 224, 224);
                    lblStatus.BackColor = clr;
                    break;
                case 2:
                    picInformacao.Visible = false;
                    picInformacao.Dock = DockStyle.None;
                    picAlerta.Visible = true;
                    picAlerta.Dock = DockStyle.Left;
                    lblStatus.Dock = DockStyle.Fill;
                    lblStatus.ForeColor = Color.YellowGreen;
                    lblStatus.BackColor = Color.Red;
                    break;
            }
        }

        private void FrmLogin_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(13))
            {
                e.Handled = true;
                SendKeys.Send("{TAB}");
            }
        }

        private void TxtSenha_Enter(object sender, EventArgs e)
        {
            if (TxtSenha.Text.Length > 0)
                TxtSenha.SelectAll();
        }
    }
}
